#pragma once
#include <iostream>
#include <pthread.h>
#include "Mutex.hpp"

namespace CondModule
{
	using namespace MutexData;
	class Cond
	{
	public:	
		Cond()
		{
			int n = pthread_cond_init(&_cond,nullptr);
			(void)n;
		}
		void Wait(Mutex &mutex)
		{
			int n = pthread_cond_wait(&_cond,mutex.Mutexptr());
			(void)n;
		}
		void Notified()
		{
			int n = pthread_cond_signal(&_cond);
			(void)n;
		}
		void NotifiedAll()
		{
			int n = pthread_cond_broadcast(&_cond);
			(void)n;
		}
		~Cond()
		{
			int n = pthread_cond_destroy(&_cond);
			(void)n;
		}
	private:
		pthread_cond_t _cond;	
	};
}